package com.yzy.controller;

import com.yzy.common.AuthStorage;
import com.yzy.common.PasswordEncoder;
import com.yzy.pojo.JwtUser;
import com.yzy.util.TokenUtil;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
/**
 * @author 杨志远
 * @implNote token控制器
 * @date 2024/12/17 15:27
 */
@RestController
@Slf4j
public class TokenController {
    /**
     * 模拟用户的注册
     * 登陆示例（账号admin,密码123456）
     */
    private final static HashMap<String, String> user = new HashMap() {
        {
            put("admin", "e10adc3949ba59abbe56e057f20f883e");
        }
    };

    /**
     * 模拟用户的登陆
     *
     * @param role
     * @param password
     * @return
     */
    @GetMapping("/login")
    public String login(String role, String password) {
        String encode = PasswordEncoder.encode(password);
        if (PasswordEncoder.matches(password, encode)) {
            // 模拟一个用户的令牌 用户id为1  登录端为网页web  角色是admin
            return TokenUtil.createToken("1", "web", "admin");
        }
        return "error";
    }

    /**
     * token 校验
     *
     * @param token
     * @return
     */
    @GetMapping("/token/validate")
    public JwtUser validate(String token) {
        return TokenUtil.checkToken(token);
    }

    /**
     * token拦截器测试
     * @return
     */
    @GetMapping("/get/Info")
    @ApiOperation("模拟拦截")
    public String getInfo() {
        // 从全局环境中获取用户id
        JwtUser user = AuthStorage.getUser();
        return "用户："+user.getUserId() + "，请求成功";
    }

}
